package api.json.demo002.controller;

import apijson.RequestMethod;
import apijson.framework.APIJSONController;
import apijson.orm.Parser;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;


/**
 * 请求路由入口控制器，包括通用增删改查接口等，转交给 APIJSON 的 Parser 来处理
 * 具体见 SpringBoot 文档
 * https://www.springcloud.cc/spring-boot.html#boot-features-spring-mvc
 * 以及 APIJSON 通用文档 3.设计规范 3.1 操作方法
 * https://github.com/Tencent/APIJSON/blob/master/Document.md#3.1
 * <br > 建议全通过HTTP POST来请求:
 * <br > 1.减少代码 - 客户端无需写HTTP GET,PUT等各种方式的请求代码
 * <br > 2.提高性能 - 无需URL encode和decode
 * <br > 3.调试方便 - 建议使用 APIAuto(http://apijson.cn/api) 或 Postman
 */
@RestController
@RequestMapping("")
public class DemoController extends APIJSONController<Long> {

    @Override
    public Parser<Long> newParser(HttpSession session, RequestMethod method) {
        /*这里关闭校验，方便新手快速测试，实际线上项目建议开启*/
        return super.newParser(session, method).setNeedVerify(false);
    }

    /**
     * 增删改查统一接口，这个一个接口可替代 7 个万能通用接口，牺牲一些路由解析性能来提升一点开发效率
     */
    @PostMapping(value = "{method}")
    @Override
    public String crud(@PathVariable String method, @RequestBody String request, HttpSession session) {
        return super.crud(method, request, session);
    }

}
